import time

def is_prime(n):
    if n <= 1:  # 1 及以下不是素数
        return False
    if n <= 3:  # 2、3 是素数
        return True
    if n % 2 == 0 or n % 3 == 0:  # 能被 2 或 3 整除的不是素数
        return False
    i = 5
    while i * i <= n:  # 只需要判断到平方根
        if n % i == 0 or n % (i + 2) == 0:
            return False
        i += 6
    return True

start_time = time.time()  # 记录开始时间
count = 0  # 用来计数，每 5 个换一行
for num in range(1, 20001):
    if is_prime(num):
        print(num, end=" ")
        count += 1
        if count % 5 == 0:  # 每 5 个就换行
            print()
end_time = time.time()  # 记录结束时间
print("\n程序运行时间：", end_time - start_time, "秒")

# 分析：最费时的是 is_prime 函数，因为要一个一个判断数是否为素数。
# 改进方法：可以用“埃拉托斯特尼筛法”，先把所有数标记为素数，然后把素数的倍数都标记为非素数，这样更高效。